/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Service;

import DAO.DAOFactory;
import DAO.FlujoDAO;
import DAO.exceptions.IllegalOrphanException;
import DAO.exceptions.NonexistentEntityException;
import DAO.exceptions.RollbackFailureException;
import Entidad.Flujo;
import VO.FlujoVO;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.EntityManager;

/**
 *
 * @author xSebastiaNx
 */
public class FlowServices {
    
    public void createFlow(FlujoVO flujoVo, EntityManager em)  {
       FlujoDAO flujoDao = (FlujoDAO)DAOFactory.createDAO(DAOFactory.FLUJO);
       List<Flujo> lista = flujoDao.findFlujoEntities(em);
       //Iterator itr = lista.iterator();
       int size = lista.size();
       int cuenta=1;
       int creado = 0 ;
       //while(itr.hasNext()) {
       for(cuenta = 1; cuenta <= size; cuenta++) {
           if(!(lista.get(cuenta-1).getIdflujos()== cuenta)) {
               flujoVo.setIdflujo(cuenta);
               Flujo flujo = flujoVo.toEntity();
               flujoDao.create(flujo, em);
               creado=1;
               break;
           }
           /*else {
               cuenta = cuenta + 1;
           }*/
       }
       if(creado==0) {
           flujoVo.setIdflujo(cuenta);
           Flujo flujo = flujoVo.toEntity();
           flujoDao.create(flujo, em);
       }
    }
    
    
    public void updateFlow(FlujoVO vo, EntityManager em)  {
    }
    
    
    public void deleteFlow(int id, EntityManager em)  {
        FlujoDAO flujoDAO = (FlujoDAO)DAOFactory.createDAO(DAOFactory.FLUJO);
        try {
            flujoDAO.destroy(id, em);
        } catch (IllegalOrphanException ex) {
            Logger.getLogger(FlowServices.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(FlowServices.class.getName()).log(Level.SEVERE, null, ex);
        } catch (RollbackFailureException ex) {
            Logger.getLogger(FlowServices.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(FlowServices.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    
    public FlujoVO readFlow(int id, EntityManager em) {
        FlujoDAO projectDAO = (FlujoDAO)DAOFactory.createDAO(DAOFactory.FLUJO);
        Flujo entity = projectDAO.findFlujo(id, em);
        if(entity != null) {
           FlujoVO vo =  entity.toVO();
           return vo;
        }
        else {
            return null;
        }
    }
}
